This is an exploratary analysis on foreign aid provided by USA.This aid given by the United States to other countries to support global peace, security, and development efforts, and provide humanitarian relief during times of crisis. It is a strategic, economic, and moral imperative for the United States and vital to U.S. national security.

You can read more via this link at wikipedia

Which country gets the highest US aid

































LS0tCnRpdGxlOiAiVVMgRm9yZWlnbiBBaWQgQW5hbHlzaXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgYW4gZXhwbG9yYXRhcnkgYW5hbHlzaXMgb24gZm9yZWlnbiBhaWQgcHJvdmlkZWQgYnkgVVNBLlRoaXMgYWlkIGdpdmVuIGJ5IHRoZSBVbml0ZWQgU3RhdGVzIHRvIG90aGVyIGNvdW50cmllcyB0byBzdXBwb3J0IGdsb2JhbCBwZWFjZSwgc2VjdXJpdHksIGFuZCBkZXZlbG9wbWVudCBlZmZvcnRzLCBhbmQgcHJvdmlkZSBodW1hbml0YXJpYW4gcmVsaWVmIGR1cmluZyB0aW1lcyBvZiBjcmlzaXMuIEl0IGlzIGEgc3RyYXRlZ2ljLCBlY29ub21pYywgYW5kIG1vcmFsIGltcGVyYXRpdmUgZm9yIHRoZSBVbml0ZWQgU3RhdGVzIGFuZCB2aXRhbCB0byBVLlMuIG5hdGlvbmFsIHNlY3VyaXR5LgoKWW91IGNhbiByZWFkIG1vcmUgdmlhIHRoaXMgbGluayBhdCBbd2lraXBlZGlhXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbml0ZWRfU3RhdGVzX2ZvcmVpZ25fYWlkICJ3aWtpcGVkaWEiKQo8aHI+CgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy53aWR0aD02LjEsIGZpZy5oZWlnaHQ9MyxmaWcuYWxpZ24gPSJjZW50ZXIiLGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHJvd3MucHJpbnQ9MzAsY29scy5wcmludD0xMCkKCiMgZmlnLmFzcD0wLjYxOAoKYGBgCgoKYGBge3IgbG9hZF9saWJzfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShkYXRhLnRhYmxlKQoKc291cmNlKCIvVXNlcnMvdmluYXljaHVyaS9WSU5BWS9WSU5BWV9SL3ZpbmF5X2Z1bmN0aW9ucy92aW5heV9mdW5jLlIiKQoKdGhlbWVfc2V0KHRoZW1lX2dyYXkoMTIpICsgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJib2xkIiksdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiQXJpYWwiKSkpCgojIHRoZW1lX3NldChnZ3RoZW1lczo6dGhlbWVfZml2ZXRoaXJ0eWVpZ2h0KDEyKSArICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIikpKQoKYGBgCgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CgpkZjwtIGZyZWFkKCIvVXNlcnMvdmluYXljaHVyaS9WSU5BWS9kYXRhc2V0L3VzX2ZvcmVpZ25fYWlkL3VzX2ZvcmVpZ25fYWlkX2NvbXBsZXRlLmNzdiIpCgpkZjwtIGphbml0b3I6OmNsZWFuX25hbWVzKGRmKQoKYGBgCgpgYGB7ciAsIGV2YWw9RkFMU0UsaW5jbHVkZT1GQUxTRX0Kc3RyKGRmKQpgYGAKCgpgYGB7ciBhbGxfZnVuY3Rpb25zfQpnZXRfY291bnRzPC0gZnVuY3Rpb24oaW5fZGYsaW5fY29scyx0b3BuPTEwKXsKICByZXR1cm4oaW5fZGZbLCAuKGZyZXE9Lk4pLCBieSA9IGMoaW5fY29scyldW29yZGVyKC1mcmVxKV1bMTp0b3BuXSkKICAKfQoKZ2V0X3RvcF8zMF9wZXI8LWZ1bmN0aW9uKGluX2R0LGxvdj1OQSxpbl9jb2xzPU5BLHRvcG49MTApewogIHRvcF8yMF9kZjwtZGF0YS5mcmFtZSgpCiAgZm9yKHggaW4gbG92KSB7CiAgICAjIHVzZSBnZXQoKSBvbiB2YXJpYWJsZQogICAgdG1wX2RmPC1pbl9kdFtnZXQoaW5fY29sc1sxXSk9PXgsLihmcmVxPS5OKSxieT1jKGluX2NvbHMpXVtvcmRlcigtZnJlcSldWzE6dG9wbl0KICAgIHRvcF8yMF9kZjwtYmluZF9yb3dzKHRvcF8yMF9kZix0bXBfZGYpCiAgICBybSh0bXBfZGYpCiAgfQogIHJldHVybih0b3BfMjBfZGYpCiAgCn0KCmdldF9haWRfc3VtbTwtZnVuY3Rpb24oZGF0YT1pbl9kdCxpbl9jb2wsdG9wbj0xMCx0aXRsZTI9TkEpewogIHRtcF9kZj1kZlssLih0b3RfYWlkPXN1bShhcy5udW1lcmljKGN1cnJlbnRfYW1vdW50KSkvMWU5KSxieT1jKGluX2NvbCldW29yZGVyKC10b3RfYWlkKV0KICB0bXBfZGY9dG1wX2RmW2dldChpbl9jb2wpIT0nV29ybGQnLCxdCiAgdG1wX2RmPXRtcF9kZlssInRvdGFsX3BlcmNlbnRhZ2UiOj1yb3VuZCh0b3RfYWlkL3N1bSh0b3RfYWlkKSoxMDAsMildCiAgIyB0bXBfZGY9aGVhZCh0bXBfZGYsdG9wbikKICAjIHRtcF9kZj10bXBfZGZbLCJ0b3BuX3BlcmNlbnRhZ2UiOj1yb3VuZCh0b3RfYWlkL3N1bSh0b3RfYWlkKSoxMDAsMildCiAgdG1wX2RmPXRtcF9kZlssImN1bW11bGF0aXZlX3BlcmNlbnRhZ2UiOj1jdW1zdW0odG90YWxfcGVyY2VudGFnZSldICMjIGN1bXVsYXRpdmUgcGVyY2VudGFnZQogIHRvdF9yb3dzPC0gbnJvdyh0bXBfZGYpCiAgdG1wX2RmPC1oZWFkKHRtcF9kZix0b3BuKQogIHRvcG48LW1pbih0b3BuLHRvdF9yb3dzKQoKICAjIGluX2NvbD1lbnF1byhpbl9jb2wpICJodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjMwOTI4NS9ob3ctdG8tdXNlLWEtdmFyaWFibGUtdG8tc3BlY2lmeS1jb2x1bW4tbmFtZS1pbi1nZ3Bsb3QiCiAgaW5fY29sPC1lbnN5bShpbl9jb2wpCiAgcDE8LXRtcF9kZiU+JQogICAgZ2dwbG90KGFlcyhyZW9yZGVyKCEhaW5fY29sLHRvdF9haWQpLHRvdF9haWQpKSsKICAgIGdlb21fY29sKCkrCiAgICBjb29yZF9mbGlwKCkrCiAgICBsYWJzKHRpdGxlPXRpdGxlMixzdWJ0aXRsZT1wYXN0ZTAoIlRvcCAiLHRvcG4sIiBvZiAiLHRvdF9yb3dzKSx4PSIiLHk9IlRvdGFsIGFpZCBpbiBiaWxsaW9ucyIpKwogICAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6Y29tbWEpCiAgCiAgdGFiMTwtYXMuZGF0YS5mcmFtZSh0bXBfZGYlPiVzbGljZSgwOjUpKQogIAogIHJldHVybihsaXN0KCJwMSI9cDEsInRhYjEiPXRhYjEpKQogIAoKICAKfQoKYGBgCgoKCldoaWNoIGNvdW50cnkgZ2V0cyB0aGUgaGlnaGVzdCBVUyBhaWQKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD0iY291bnRyeV9uYW1lIix0b3BuPTE1LHRpdGxlMiA9ICJDb3VudHJ5IHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMywxKSkKCgpgYGAKCiogTW9yZSB0aGFuIDUwJSBvZiB0aGUgYWlkIGdvZXMgdG8gMyBjb3VudHJpZXMgaS5lIEFmZ2hhbmlzdGFuLCBJc3JhZWwsIElyYXEuCiogQWZnaGFuaXN0YW4gYW5kIElyYXEgYXJlIGxpa2VseSBkdWUgdG8gdGhlIHdhciBhbmQgY29uZmxpY3RzIGZvciBhIGxvbmcgdGltZSBhbmQgbmF0aW9uIHJlYnVpbGRpbmcuCiogTm90IHN1cmUgb24gdGhlIGFpZCB0byBJc3JhZWwuCiogUGFraXN0YW4gaXMgaW4gdGhlIHRvcCA1IGNvdW50cmllcyB0aGF0IHRha2VzIGFpZCBmb3IgVVMuCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9CgpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygicmVnaW9uX25hbWUiKSx0b3BuPTE1LHRpdGxlMiA9ICJSZWdpb24gd2lzZSBhaWQgc3VtbWFyeSIpCmdyaWQuYXJyYW5nZShteV9saXN0JHAxLHRhYmxlR3JvYihteV9saXN0JHRhYjEsdGhlbWUgPSB0dGhlbWVfZGVmYXVsdChiYXNlX3NpemUgPSAxMCkpLGhlaWdodHM9YygyLDEpKQoKCgpgYGAKCiogTWlkZGxlIGVhc3QgYW5kIEFmcmljYSBhcmUgdGhlIHRvcCByZWdpb25zIHdoZXJlIHRoZSBhaWQgaXMgc2VudC4gSXJhcSwgQWZnaGFuaXN0YW4sIElyYW4sIElzcmFlbCBhcmUgYWxsIGluIG1pZGRsZSBlYXN0LgoqIEludGVyZXN0aW5nbHksIG5vbmUgb2YgdGhlIEFmcmljYW4gY291bnRyaWVzIGFyZSBpbiB0aGUgZWFybGllciB0b3AgNSBjaGFydC4KCjxicj48aHI+CgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJpbmNvbWVfZ3JvdXBfbmFtZSIpLHRvcG49MTUsdGl0bGUyID0gImluY29tZV9ncm91cF9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKIAoKCmBgYAoKKiBNb3N0IG9mIHRoZSBtaWRkbGUgZWFzdCBhbmQgQWZyaWNhIHdpbGwgZmFsbCBpbiB0aGUgbG93IGluY29tZSBjYXRlZ29yeS4KKiBJbnRlcmVzdGluZyB0byBzZWUgZXZlbiBoaWdoIGluY29tZSBjb3VudHJpZXMgYXJlIGdldHRpbmcgYWlkIGZyb20gVVNBLCB3aWxsIGFuYWx5emUgd2hhdCBzb3J0IG9mIGdyb3VwcyBhaWQgc3VjaCBjb3VudHJpZXMuCgoKPGJyPjxocj4KCmBgYHtyLGZpZy53aWR0aD02LjEsZmlnLmhlaWdodD0zfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygiaW1wbGVtZW50aW5nX2FnZW5jeV9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAiaW1wbGVtZW50aW5nX2FnZW5jeV9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgoKYGBgCgoqIERlcGFydG1lbnQgb2YgRGVmZW5zZSAoRG9EKSwgdGhlIGNvbnN0YW50IGNoYXJhY3RlciBpbiBhbGwgdGhlIEhvbGx5d29vZCBhY3Rpb24vd2FyIG1vdmllcy4KCjxicj48aHI+CgpgYGB7cixmaWcud2lkdGg9Ni4xLGZpZy5oZWlnaHQ9M30KCm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJzdWJhZ2VuY3lfbmFtZSIpLHRvcG49MTUsdGl0bGUyID0gInN1YmFnZW5jeV9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgpgYGAKCjxicj48aHI+CgpgYGB7cixmaWcud2lkdGg9Ni4xLGZpZy5oZWlnaHQ9M30KbXlfbGlzdDwtZ2V0X2FpZF9zdW1tKGRhdGE9ZGYsaW5fY29sPWMoImNoYW5uZWxfY2F0ZWdvcnlfbmFtZSIpLHRvcG49MTUsdGl0bGUyID0gImNoYW5uZWxfY2F0ZWdvcnlfbmFtZSB3aXNlIGFpZCBzdW1tYXJ5IikKZ3JpZC5hcnJhbmdlKG15X2xpc3QkcDEsdGFibGVHcm9iKG15X2xpc3QkdGFiMSx0aGVtZSA9IHR0aGVtZV9kZWZhdWx0KGJhc2Vfc2l6ZSA9IDEwKSksaGVpZ2h0cz1jKDIsMSkpCgoKYGBgCgo8YnI+PGhyPgoKCmBgYHtyLGZpZy53aWR0aD02LjEsZmlnLmhlaWdodD0zfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygiY2hhbm5lbF9zdWJjYXRlZ29yeV9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAiY2hhbm5lbF9zdWJjYXRlZ29yeV9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgoKYGBgCgoKPGJyPjxocj4KCmBgYHtyLGZpZy53aWR0aD02LjEsZmlnLmhlaWdodD0zfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygiZGFjX2NhdGVnb3J5X25hbWUiKSx0b3BuPTE1LHRpdGxlMiA9ICJkYWNfY2F0ZWdvcnlfbmFtZSB3aXNlIGFpZCBzdW1tYXJ5IikKZ3JpZC5hcnJhbmdlKG15X2xpc3QkcDEsdGFibGVHcm9iKG15X2xpc3QkdGFiMSx0aGVtZSA9IHR0aGVtZV9kZWZhdWx0KGJhc2Vfc2l6ZSA9IDEwKSksaGVpZ2h0cz1jKDIsMSkpCgoKIApgYGAKCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJkYWNfc2VjdG9yX25hbWUiKSx0b3BuPTE1LHRpdGxlMiA9ICJkYWNfc2VjdG9yX25hbWUgd2lzZSBhaWQgc3VtbWFyeSIpCmdyaWQuYXJyYW5nZShteV9saXN0JHAxLHRhYmxlR3JvYihteV9saXN0JHRhYjEsdGhlbWUgPSB0dGhlbWVfZGVmYXVsdChiYXNlX3NpemUgPSAxMCkpLGhlaWdodHM9YygyLDEpKQoKCiAKYGBgCgoKPGJyPjxocj4KCmBgYHtyLGZpZy53aWR0aD02LjEsZmlnLmhlaWdodD0zfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygiZGFjX3B1cnBvc2VfbmFtZSIpLHRvcG49MTUsdGl0bGUyID0gImRhY19wdXJwb3NlX25hbWUgd2lzZSBhaWQgc3VtbWFyeSIpCmdyaWQuYXJyYW5nZShteV9saXN0JHAxLHRhYmxlR3JvYihteV9saXN0JHRhYjEsdGhlbWUgPSB0dGhlbWVfZGVmYXVsdChiYXNlX3NpemUgPSAxMCkpLGhlaWdodHM9YygyLDEpKQoKCgpgYGAKCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJmdW5kaW5nX2FjY291bnRfbmFtZSIpLHRvcG49MTUsdGl0bGUyID0gImZ1bmRpbmdfYWNjb3VudF9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgpgYGAKCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJmdW5kaW5nX2FnZW5jeV9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAiZnVuZGluZ19hZ2VuY3lfbmFtZSB3aXNlIGFpZCBzdW1tYXJ5IikKZ3JpZC5hcnJhbmdlKG15X2xpc3QkcDEsdGFibGVHcm9iKG15X2xpc3QkdGFiMSx0aGVtZSA9IHR0aGVtZV9kZWZhdWx0KGJhc2Vfc2l6ZSA9IDEwKSksaGVpZ2h0cz1jKDIsMSkpCgoKCgpgYGAKCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9Cm15X2xpc3Q8LWdldF9haWRfc3VtbShkYXRhPWRmLGluX2NvbD1jKCJhaWRfdHlwZV9ncm91cF9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAiYWlkX3R5cGVfZ3JvdXBfbmFtZSB3aXNlIGFpZCBzdW1tYXJ5IikKZ3JpZC5hcnJhbmdlKG15X2xpc3QkcDEsdGFibGVHcm9iKG15X2xpc3QkdGFiMSx0aGVtZSA9IHR0aGVtZV9kZWZhdWx0KGJhc2Vfc2l6ZSA9IDEwKSksaGVpZ2h0cz1jKDIsMSkpCgoKCmBgYAoKCjxicj48aHI+CgpgYGB7cixmaWcud2lkdGg9Ni4xLGZpZy5oZWlnaHQ9M30KbXlfbGlzdDwtZ2V0X2FpZF9zdW1tKGRhdGE9ZGYsaW5fY29sPWMoImFjdGl2aXR5X25hbWUiKSx0b3BuPTE1LHRpdGxlMiA9ICJhY3Rpdml0eV9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgoKYGBgCgo8YnI+PGhyPgoKCmBgYHtyLGZpZy53aWR0aD02LjEsZmlnLmhlaWdodD0zfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygidXNnX3NlY3Rvcl9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAidXNnX3NlY3Rvcl9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgoKYGBgCgoKPGJyPjxocj4KCmBgYHtyfQpteV9saXN0PC1nZXRfYWlkX3N1bW0oZGF0YT1kZixpbl9jb2w9YygiYXNzaXN0YW5jZV9jYXRlZ29yeV9uYW1lIiksdG9wbj0xNSx0aXRsZTIgPSAiYXNzaXN0YW5jZV9jYXRlZ29yeV9uYW1lIHdpc2UgYWlkIHN1bW1hcnkiKQpncmlkLmFycmFuZ2UobXlfbGlzdCRwMSx0YWJsZUdyb2IobXlfbGlzdCR0YWIxLHRoZW1lID0gdHRoZW1lX2RlZmF1bHQoYmFzZV9zaXplID0gMTApKSxoZWlnaHRzPWMoMiwxKSkKCgpgYGAKCgo8YnI+PGhyPgoKYGBge3IsZmlnLndpZHRoPTYuMSxmaWcuaGVpZ2h0PTN9CmRmJT4lCiAgZmlsdGVyKGNvdW50cnlfbmFtZSAlaW4lIGMoIkluZGlhIiwiUGFraXN0YW4iKSklPiUKICBncm91cF9ieShjb3VudHJ5X25hbWUsZmlzY2FsX3llYXIpJT4lCiAgc3VtbWFyaXNlKHRvdF9haWQ9c3VtKGFzLm51bWVyaWMoY3VycmVudF9hbW91bnQpKS8xZTkpJT4lICAgICMgMWU5LSBiaWxsaW9uICwxZTY9bWlsbGlvbgogIG11dGF0ZShmaXNjYWxfeWVhcj1hcy5udW1lcmljKGlmZWxzZShmaXNjYWxfeWVhcj09JzE5NzZ0cScsIjE5NzYiLGZpc2NhbF95ZWFyKSkpJT4lCiAgZ2dwbG90KGFlcyhmaXNjYWxfeWVhcix0b3RfYWlkLGNvbG9yPWNvdW50cnlfbmFtZSkpKwogIGdlb21fbGluZSgpKwogIGxhYnModGl0bGU9IlRyZW5kcyBvZiBVUyBmb3JlaWduIGFpZCB0byBJbmRpYSBhbmQgUGFraXN0YW4iLHk9ImluIGJpbGxpb25zIix4PSIiKSsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQoKIyBwYXN0ZShyb3VuZCh4IC8gMWU2LCAxKSwgIk0iKQpgYGAKCiogSW5kaWEgc2hvd3MgYSBzcGlrZSBkdXJpbmcgbGF0ZSAxOTUwJ3MgdGlsbCA3MCdzLiBUaGlzIGlzIGxpa2VseSBkdWUgdG8gcG9zdCBJbmRpYSBpbmRlcGVuZGVuY2UgZXJhLgoqIFBha2lzdGFuIGlzIHNob3dpbmcgdGhlIHNwaWtlIGF0IHRoZSBzYW1lIHRpbWUgYnV0IGNvbnRpbnVlcyB0byBzaG93IGFuIGV2ZXIgaW5jcmVhc2luZyB0cmVuZC4KKiBJbnRlcmVzdGluZyB0byBzZWUgdGhhdCBJbmRpYSBuZXZlciBjcm9zc2VkIHRoZSBiaWxsaW9uIG1hcmsgd2hpbGUgUGFraXN0YW4gaXMgY29uc2lzdGVudGx5ID4xQiBzaW5jZSB5ZWFyIDIwMDAKCgpgYGB7ciAsIGluY2x1ZGU9RkFMU0UsZXZhbD1GQUxTRSxmaWcud2lkdGg9Ni4xfQojIFNhdCBBdWcgMTcgMTc6MTE6MTYgMjAxOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNPTU1FTlRTSEVSRS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpkZlssLih0b3RfYWlkPXN1bShhcy5udW1lcmljKGN1cnJlbnRfYW1vdW50KS8xMDAwMDAwKSksYnk9LihpbXBsZW1lbnRpbmdfYWdlbmN5X25hbWUpXVtvcmRlcigtdG90X2FpZCldWzE6NV0KCmR0MTwtZGZbLC4odG90X2FpZD1zdW0oYXMubnVtZXJpYyhjdXJyZW50X2Ftb3VudCkpKSxieT0uKGltcGxlbWVudGluZ19hZ2VuY3lfbmFtZSldW29yZGVyKC10b3RfYWlkKV1bMTo1XQpkdDI8LWRmJT4lCiAgZ3JvdXBfYnkoaW1wbGVtZW50aW5nX2FnZW5jeV9uYW1lKSU+JQogIHN1bW1hcmlzZSh0b3RfYWlkPXN1bShjdXJyZW50X2Ftb3VudCkpJT4lCiAgZmlsdGVyKGltcGxlbWVudGluZ19hZ2VuY3lfbmFtZSE9J1dvcmxkJyklPiUKICBhcnJhbmdlKC10b3RfYWlkKSU+JQogIHNsaWNlKDE6NSklPiUKICBtdXRhdGUodG90X2FpZD10b3RfYWlkLzEwMDAwMDApCgpyZXM9bWljcm9iZW5jaG1hcms6Om1pY3JvYmVuY2htYXJrKGR0MSxkdDIsdGltZXM9MTAwKQphdXRvcGxvdChyZXMpCnBsb3QocmVzKQoKCnRhYmxlKGRmJGZpc2NhbF95ZWFyKQoKZGYlPiUKICBmaWx0ZXIoY291bnRyeV9uYW1lICVpbiUgYygiSW5kaWEiLCJQYWtpc3RhbiIpKSU+JQogIGdyb3VwX2J5KGNvdW50cnlfbmFtZSxmaXNjYWxfeWVhciklPiUKICBzdW1tYXJpc2UodG90X2FpZD1zdW0oYXMubnVtZXJpYyhjdXJyZW50X2Ftb3VudCkpLzEwMDAwMDApJT4lCiAgcmVzaGFwZTI6OmRjYXN0KGZpc2NhbF95ZWFyfmNvdW50cnlfbmFtZSx2YWx1ZS52YXI9InRvdF9haWQiLGZpbGw9MCklPiUKICBnZ3Bsb3QoYWVzKGZpc2NhbF95ZWFyKSkrCiAgZ2VvbV9saW5lKGFlcyh5ID0gInRvdF9haWQiKSxncm91cD0xLCBjb2xvdXIgPSAiYmx1ZSIpKwogIGdlb21fbGluZShhZXMoeSA9ICJ0b3RfYWlkIiksZ3JvdXA9MSwgY29sb3VyID0gInJlZCIpKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSkpCiAgIyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9uIikKCgoKZGYlPiUKICBmaWx0ZXIoY291bnRyeV9uYW1lICVpbiUgYygiSW5kaWEiLCJQYWtpc3RhbiIpKSU+JQogIGdyb3VwX2J5KGNvdW50cnlfbmFtZSxmaXNjYWxfeWVhciklPiUKICBzdW1tYXJpc2UodG90X2FpZD1zdW0oYXMubnVtZXJpYyhjdXJyZW50X2Ftb3VudCkpLzEwMDAwMDApJT4lCiAgcmVzaGFwZTI6OmRjYXN0KGZpc2NhbF95ZWFyfmNvdW50cnlfbmFtZSx2YWx1ZS52YXI9InRvdF9haWQiLGZpbGw9MCklPiUKICBnZ3Bsb3QoYWVzKGZpc2NhbF95ZWFyLEluZGlhLGNvbG9yPSJibHVlIikpKwogIGdlb21fbGluZShncm91cD0xKSsKICBnZW9tX2xpbmUoYWVzKGZpc2NhbF95ZWFyLFBha2lzdGFuLGNvbG9yPSJyZWQiKSxncm91cD0xKSsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQoKCgpkZiU+JQogIGZpbHRlcihjb3VudHJ5X25hbWUgJWluJSBjKCJJbmRpYSIsIlBha2lzdGFuIikpJT4lCiAgZ3JvdXBfYnkoY291bnRyeV9uYW1lLGZpc2NhbF95ZWFyKSU+JQogIHN1bW1hcmlzZSh0b3RfYWlkPXN1bShhcy5udW1lcmljKGN1cnJlbnRfYW1vdW50KSkvMTAwMDAwMCklPiUKICBtdXRhdGUoZmlzY2FsX3llYXI9YXMubnVtZXJpYyhpZmVsc2UoZmlzY2FsX3llYXI9PScxOTc2dHEnLCIxOTc2IixmaXNjYWxfeWVhcikpKSU+JQogIGdncGxvdChhZXMoZmlzY2FsX3llYXIsdG90X2FpZCxjb2xvcj1jb3VudHJ5X25hbWUpKSsKICBnZW9tX2xpbmUoKSsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEpKQoKYGBgCgoK